package com.springboot.ww.platform.pd.lms.api;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 描述：
 *
 * @author 🧑 ‍wanwei
 * @since 2024-05-23 15:13
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class PdListingResp implements Serializable {


    @JsonProperty("totalCount")
    private int totalCount;
    @JsonProperty("data")
    private List<DataBean> data;

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class DataBean implements Serializable {
        @JsonProperty("productId")
        private String productId;
        @JsonProperty("productJitMode")
        private ProductJitModeBean productJitMode;
        @JsonProperty("productName")
        private String productName;
        @JsonProperty("createdAt")
        private long createdAt;
        @JsonProperty("productSemiManaged")
        private ProductSemiManagedBean productSemiManaged;
        @JsonProperty("isSupportPersonalization")
        private boolean isSupportPersonalization;
        @JsonProperty("extCode")
        private String extCode;
        @JsonProperty("leafCat")
        private LeafCatBean leafCat;
        @JsonProperty("categories")
        private CategoriesBean categories;
        @JsonProperty("productSkcId")
        private String productSkcId;
        @JsonProperty("mainImageUrl")
        private String mainImageUrl;
        @JsonProperty("matchSkcJitMode")
        private boolean matchSkcJitMode;
        @JsonProperty("productProperties")
        private List<ProductPropertiesBean> productProperties;
        @JsonProperty("productSkuSummaries")
        private List<ProductSkuSummariesBean> productSkuSummaries;

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class ProductJitModeBean implements Serializable {
            @JsonProperty("quickSellAgtSignStatus")
            private Object quickSellAgtSignStatus;
            @JsonProperty("matchJitMode")
            private boolean matchJitMode;
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class ProductSemiManagedBean implements Serializable {
            @JsonProperty("bindSites")
            private List<BindSitesBean> bindSites;

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class BindSitesBean implements Serializable {
                @JsonProperty("siteId")
                private Long siteId;
                @JsonProperty("siteName")
                private String siteName;
            }
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class LeafCatBean implements Serializable {
            @JsonProperty("catId")
            private Long catId;
            @JsonProperty("catName")
            private String catName;
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class CategoriesBean implements Serializable {
            @JsonProperty("cat8")
            private Cat8Bean cat8;
            @JsonProperty("cat9")
            private Cat9Bean cat9;
            @JsonProperty("cat6")
            private Cat6Bean cat6;
            @JsonProperty("cat7")
            private Cat7Bean cat7;
            @JsonProperty("cat4")
            private Cat4Bean cat4;
            @JsonProperty("cat5")
            private Cat5Bean cat5;
            @JsonProperty("cat2")
            private Cat2Bean cat2;
            @JsonProperty("cat3")
            private Cat3Bean cat3;
            @JsonProperty("cat10")
            private Cat10Bean cat10;
            @JsonProperty("cat1")
            private Cat1Bean cat1;
            @JsonProperty("leafCat")
            private Object leafCat;

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat8Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat9Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat6Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat7Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat4Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat5Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat2Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat3Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat10Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class Cat1Bean implements Serializable {
                @JsonProperty("catId")
                private Long catId;
                @JsonProperty("catName")
                private String catName;
            }
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class ProductPropertiesBean implements Serializable {
            @JsonProperty("vid")
            private Long vid;
            @JsonProperty("valueUnit")
            private String valueUnit;
            @JsonProperty("language")
            private Object language;
            @JsonProperty("pid")
            private Long pid;
            @JsonProperty("templatePid")
            private Long templatePid;
            @JsonProperty("numberInputValue")
            private String numberInputValue;
            @JsonProperty("propValue")
            private String propValue;
            @JsonProperty("valueExtendInfo")
            private String valueExtendInfo;
            @JsonProperty("propName")
            private String propName;
            @JsonProperty("refPid")
            private Long refPid;
        }

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class ProductSkuSummariesBean implements Serializable {
            @JsonProperty("productSkuId")
            private String productSkuId;
            @JsonProperty("extCode")
            private String extCode;
            @JsonProperty("productSkuWhExtAttr")
            private ProductSkuWhExtAttrBean productSkuWhExtAttr;
            @JsonProperty("virtualStock")
            private int virtualStock;
            @JsonProperty("productSkuSpecList")
            private List<ProductSkuSpecListBean> productSkuSpecList;

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class ProductSkuWhExtAttrBean implements Serializable {
                @JsonProperty("productSkuWeight")
                private ProductSkuWeightBean productSkuWeight;
                @JsonProperty("productSkuWmsVolume")
                private Object productSkuWmsVolume;
                @JsonProperty("productSkuSubSellMode")
                private Object productSkuSubSellMode;
                @JsonProperty("productSkuFragileLabels")
                private Object productSkuFragileLabels;
                @JsonProperty("productSkuSensitiveAttr")
                private ProductSkuSensitiveAttrBean productSkuSensitiveAttr;
                @JsonProperty("productSkuNewSensitiveAttr")
                private ProductSkuNewSensitiveAttrBean productSkuNewSensitiveAttr;
                @JsonProperty("productSkuVolumeLabel")
                private Object productSkuVolumeLabel;
                @JsonProperty("productSkuWmsWeight")
                private Object productSkuWmsWeight;
                @JsonProperty("productSkuVolume")
                private ProductSkuVolumeBean productSkuVolume;
                @JsonProperty("productSkuSensitiveLimit")
                private ProductSkuSensitiveLimitBean productSkuSensitiveLimit;
                @JsonProperty("productSkuWmsVolumeLabel")
                private Object productSkuWmsVolumeLabel;
                @JsonProperty("productSkuBarCodes")
                private List<?> productSkuBarCodes;

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuWeightBean implements Serializable {
                    @JsonProperty("value")
                    private BigDecimal value;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuSensitiveAttrBean implements Serializable {
                    @JsonProperty("isSensitive")
                    private int isSensitive;
                    @JsonProperty("sensitiveTypes")
                    private List<?> sensitiveTypes;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuNewSensitiveAttrBean implements Serializable {
                    @JsonProperty("force2NormalTypes")
                    private Object force2NormalTypes;
                    @JsonProperty("isForce2Normal")
                    private boolean isForce2Normal;
                    @JsonProperty("sensitiveList")
                    private List<Integer> sensitiveList;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuVolumeBean implements Serializable {
                    @JsonProperty("len")
                    private BigDecimal len;
                    @JsonProperty("width")
                    private BigDecimal width;
                    @JsonProperty("height")
                    private BigDecimal height;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuSensitiveLimitBean implements Serializable {
                    @JsonProperty("maxBatteryCapacityHp")
                    private Object maxBatteryCapacityHp;
                    @JsonProperty("maxBatteryCapacity")
                    private Object maxBatteryCapacity;
                    @JsonProperty("maxLiquidCapacity")
                    private Object maxLiquidCapacity;
                    @JsonProperty("maxLiquidCapacityHp")
                    private Object maxLiquidCapacityHp;
                    @JsonProperty("maxKnifeLength")
                    private Object maxKnifeLength;
                    @JsonProperty("maxKnifeLengthHp")
                    private Object maxKnifeLengthHp;
                }
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class ProductSkuSpecListBean implements Serializable {
                @JsonProperty("specId")
                private Long specId;
                @JsonProperty("parentSpecName")
                private String parentSpecName;
                @JsonProperty("specName")
                private String specName;
                @JsonProperty("parentSpecId")
                private Long parentSpecId;
            }
        }
    }

}
